package com.mlick.a.recursion;

/**
 * @author lixiangxin
 * @date 2019/3/22 13:27
 * <p>
 * 递归（recursion）：程序调用自身的编程技巧。
 * 递归满足2个条件：
 * 1）有反复执行的过程（调用自身）
 * 2）有跳出反复执行过程的条件（递归出口）
 * <p>
 * <p>
 * 阶乘
 * <p>
 * n! = n * (n-1) * (n-2) * ...* 1(n>0)
 **/
public class R1 {

    public long recursion(int n) {
        if (n == 0) {
            return 1;
        }
        return n * recursion(n - 1);
    }


    public static void main(String[] args) {
        System.out.println(new R1().recursion(5));
    }

}
